package StreamTest;

import java.util.ArrayList;
import java.util.stream.Stream;

/*
练习
现有两个ArrayList集合，分别存储6名男演员名称和6名女演员名称，要求完成如下操作
男演员只要名字为3个字的前3人
女演员只要姓林的，并且不要第一个
把过滤后的元素作为构造方法的参数创建演员对象，遍历数据
    演员类Actor已经提供，里面有一个成员变量，一个带参构造方法，以及成员变量对应的get/set方法
*/
public class StreamDemo {

    public static void main(String[] args) {
        //创建集合
        ArrayList<String> manlist=new ArrayList<String>();
        manlist.add("李连杰");
        manlist.add("成龙");
        manlist.add("吴京");
        manlist.add("姜恒星");
        manlist.add("刘德华");
        manlist.add("周星驰");

        ArrayList<String> womenlist=new ArrayList<String>();
        womenlist.add("林心如");
        womenlist.add("张曼玉");
        womenlist.add("林青霞");
        womenlist.add("张曼玉");
        womenlist.add("鞠婧祎");
        womenlist.add("柳岩");

       /* //男演员只要名字为3个字的前3人
        Stream<String> manstream = manlist.stream().filter(s -> s.length() == 3).limit(3);

        //女演员只要姓林的，并且不要第一个
        Stream<String> womenstream = womenlist.stream().filter(s -> s.startsWith("林")).skip(1);

        //把过滤后的男演员姓名和女演员姓名合并到一起
        Stream<String> stringStream = Stream.concat(manstream, womenstream);

        //把过滤后的元素作为构造方法的参数创建演员对象，遍历数据
//        stringStream.map(Actor::new).forEach(System.out::println);//拿到的是每个对象
        stringStream.map(Actor::new).forEach(p-> System.out.println(p.getName()));*/

        //合并
        Stream.concat(manlist.stream().filter(s->s.length()==3).limit(3),
                womenlist.stream().filter(s->s.startsWith("林")).skip(1)).
                map(Actor::new).forEach(p-> System.out.println(p.getName()));

    }
}
